<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自定义模块</title>
    <script>
        /**
         * 使用闭包创建一个模块
         * 模块就是具有特定功能的js文件
         * 只向外暴漏一个含有多个方法的对象或函数
         * 
         */
        function mymodule() {
            var message = 'helloHELLO666'
            
            function printUp() {
                console.log(message.toUpperCase());
            }
            
            function pringLow() {
                console.log(message.toLowerCase());
            }
            
            return {
                printUp:printUp,
                pringLow:pringLow
            }
        }

        /**
         * 匿名函数自调用时，暴露模块
         */
        (() => {
            var age = 0;
            
            function add() {
                age ++
                console.log(age)
            }
            
            function dev() {
                age --
                console.log(age)
            }
            
            window.ageModule = {
                add:add,
                dev:dev
            }
        })()
    </script>
    
    <script>
        var mod = mymodule()
        mod.pringLow()
        mod.printUp()

        ageModule.add()
        ageModule.dev()
    </script>
</head>
<body>

</body>
</html>
